/**
 * AdminApplication - part of PerlaGis Architecture
 *
 * Copyright (C) 2010 Ricardo Gonzalez (gomnaz@gmail.com)
 * This program is free software: you can redistribute it and/or modify it under the
 * terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
 * Public License for more details.
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see http://www.gnu.org/licenses/
 */
package org.admin.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.admin.controllers.PerlaController;
import org.perla.services.Nodo;
import org.perla.services.Sensori;

/**
 * Servlet che gestisce le informazioni complete del database Perla.
 * In base al parametro <code>what</code> può eseguire le seguenti operazioni:
 * <ul>
 * <li><code>nodes</code>: restituisce la tabella con tutti i nodi presenti in Perla</li>
 * <li><code>sensors</code>: restituisce la tabella con tutti i sensori presenti in Perla</li>
 * </ul>
 *
 * @author Ricardo Gonzalez
 * @author Eva Gjeci
 */
@WebServlet(name = "ExtraActions", urlPatterns = {"/extra"})
public class ExtraServlet extends HttpServlet {

    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String i = "";
        String what = request.getParameter("what");
        if (what.equals("nodes")) {
            i += "<thead><tr><th>IdNodo</th><th>Alias</th><th>Coord.X</th><th>Coord.Y</th></tr></thead>";
            for (Nodo n : PerlaController.getNodes()) {
                i += "<tr>"
                        + "<td>" + n.getIdNodo() + "</td>"
                        + "<td>" + n.getAlias() + "</td>"
                        + "<td>" + n.getCoorde() + "</td>"
                        + "<td>" + n.getCoordn() + "</td></tr>\n";
            }
        } else if (what.equals("sensors")) {
            i += "<thead><tr><th>IdNodo</th><th>IdSensore</th><th>Tipo</th><th>Coord.X</th><th>Coord.Y</th></tr></thead>";
            for (Sensori s : PerlaController.getSensors()) {
                i += "<tr>"
                        + "<td>" + s.getSensoriPK().getIdNodo() + "</td>"
                        + "<td>" + s.getSensoriPK().getIdSensore() + "</td>"
                        + "<td>" + s.getTiposensore().getNome() + "</td>"
                        + "<td>" + s.getCoorde() + "</td><td>" + s.getCoordn() + "</td>"
                        + "</tr>";
            }
        }
        try {
            out.println("<table id=\"values-table\" class=\"centered\">");
            out.println(i);
            out.println("</table>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
